// es5 构造函数
const MinStack = function() {
    this.stack = [];//数组
};  
MinStack.prototype.push = function(x) {
    this.stack.push(x);
};
MinStack.prototype.pop = function() {
    return this.stack.pop();
};
MinStack.prototype.top = function() {
    return this.stack[this.stack.length - 1];
};
MinStack.prototype.getMin = function(){
    //O(1)
    // return Math.min(...this.stack)
    //O(n)
    // let min = this.stack[0]
    // this.stack.forEach(x =>{
    //     if(x<min){
    //         min=x
    //     }
    // })
    // return min
    // 一遍一遍的过栈，找到最小值
    //infinity 表示正无穷大
    // let minValue = Infinity;
    // const {stack} = this;
    // for(let i=0;i<stack.length;i++){
    //     if(stack[i]<minValue){
    //         minValue=stack[i]
    //     }
    // }
    // return minValue
    // 辅助栈写法
    this.minStack = [];
    this.stack.forEach(x =>{
        if(this.minStack.length === 0 || x<=this.minStack[this.minStack.length - 1]){
            this.minStack.push(x)
        }
    })
    return this.minStack.prototype.top()
}